16 - Theorie der Programmierung [ID:9260]
50 von 503 angezeigt

Wir haben uns angesehen, Datentypen in sehr einfacher Form, zum Beispiel natürliche Zahlen

oder binäre Bäume. Es erstaunt mich fast ein bisschen, dass sich spätestens in dem Moment,

wo ich die Bäume eingeführt habe, keiner beschwert hat, dass man da nichts dran schreiben darf.

Gut, ich hatte es vielleicht auch von alleine sogar erwähnt. Also das, was wir bisher haben,

ist evidenterweise keine besonders befriedigende Art von Datentyp. Also zum Beispiel sowas wie

Listen über irgendwelche Einträgen, ja, können wir damit nicht. Also wir können an die Datentypen

nichts ran schreiben, es sei denn, wir Listen eben, also so für Enumeration-Types geht es noch,

da führen wir zur Not irgendwie Konstanten ein für alles, was wir da ran schreiben wollen. Aber

sobald es irgendwie an, das weiß ich, Listen von natürlichen Zahlen geht oder sowas, was man ja

doch vielleicht ganz gerne haben möchte, bricht das also zusammen. So, das heißt also, ja, wir

haben über dem ganzen Schweben so einen Begriff von Mehrsortigkeit, der uns dann zum Beispiel

folgenden Datentyp, der, das kriege ich jetzt nicht gerettet, die uns also dann zum Beispiel

die Definition folgenden Datentyps erlauben würde, eben eines Typs von Listen über irgendwelchen

Einträgen des Typs A. Da würden wir also nicht wieder eine Leere Liste haben wollen.

Ich mache mal jetzt eine Zeile hier mit Semikolon und wir würden einen

Konstruktor haben wollen. Konstkonstruktor klingt wild, Konst heißt natürlich gerade Konstruktor,

der klassische, der Konstruktor aller Konstruktoren, nicht? Also die Art Konstruktor,

die mir ein Element vorne an eine Liste hängt. Wie sieht der aus? Der nimmt eben das vorne an zu

hängende Element und eine Restliste und bastelt daraus eine neue Liste. So, da hätten wir jetzt

also zwei Sorten, nicht? A und List A. Offenbar spielt das A dabei so eine leicht andere Rolle als

das List A, nicht? Also das A ist was, das sehen wir irgendwie als gegeben an und die Listen,

die konstruieren wir, nicht? Und insbesondere beobachte man, und wir machen das auch gleich noch

explizit. Ich möchte hier natürlich keine Konstruktoren haben, die mir neue Elemente von

A konstruieren. Das wäre irgendwie abusive. Also wenn ich irgendwie einen Datentyp natürliche

Zahlen rein kriege und darüber Listen konstruiere und der Datentyp für Listen, der produziert mir

neue natürliche Zahlen, das wäre irgendwie unsauber. Das heißt also dieses Ding hier

hat so eine Sonderrolle. Das ist eben ein Parameter der ganzen Geschichte. Das werden wir eben auch

formal explizit machen. Ja, so oder so reden wir also über Dinge, die also nicht mehr nur eine

unterliegende Menge haben werden, sondern eben mehrere, mindestens mal die Parameter. Das kann

uns ja nun nicht schocken. Wir haben ja schon den getypten Lambda-Kalkül gesehen. Und dann

machen wir sich auch Fragen, warum ich also hier von Sorten und nicht von Typen rede. Also so mal

als Slogan, Sorten sind irgendwie Typen ohne Typsystem gewissermaßen. Also es ist hier kein

richtiges Typsystem drüber zunächst mal. Ja, sondern, ja, so wollen wir uns die Datentypen hier angucken,

sondern wir haben einfach nur irgendwie durchindizierte Mengen. Deswegen nennen wir sie

nur Sorten und Typen werden es erst dann, wenn man da ein richtiges Typsystem mit mindestens mal

Funktionstyp-Konstruktor drüber setzt. Ja, ansonsten darf man sich getrost vorstellen,

dass also Sorten und Typen irgendwie dasselbe sind. Also im Bereich dieser Datentypanalyse ist eben

das Wort Sorte einfach üblicher als das Wort Typ. So, also es gibt mehrere Sorten und ich habe

gesagt, okay, also einige davon sind Parametersorten. Da kann man sich natürlich auch vorstellen,

dass es vielleicht mehrere gibt. Wenn ich irgendwie Listen aus abwechselnden Charakters und natürlichen

Zahlen haben will oder sowas, ja, dann habe ich da durchaus auch mal mehrere Parameter. Aber es kann

auch vorkommen, dass der eigentliche Datentyp, den ich konstruieren will, aus mehreren Sorten

besteht. Machen wir mal folgendes Beispiel. So, wie wollte ich den nennen? So, der kürze halber nenne

ich die Dinger mal weiter tree, damit ich nicht immer so viel schreiben muss. In einer sauberen

Bibliothek würde man da einen anständigen spezifischen Namen für verwenden. Was sollen

das für Bäume werden? Das sollen Bäume werden, bei denen ich mich nicht von Anfang an auf den

Verzweigungsgrad festlege. Die sind also endlich verzweigend, aber nicht irgendwie binär oder

ternär oder sowas, sondern da kann eben ein Knoten auch mal 25 Kinder haben oder sowas.

Relativ übliche Datenstruktur. Mit Fachausdruck heißen die sonst Rose Trees, nach, ich glaube,

dem Erfinder, ich weiß gar nicht, wie der mit Vornamen heißt. So, das heißt also, ja, was ist

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:23:30 Min

Aufnahmedatum

2018-06-11

Hochgeladen am

2018-06-11 16:59:04

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen